package com.ego.upload.controller;

import com.ego.upload.service.UploadService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/upload")
@CrossOrigin
public class UploadController {
    /**
     * 文件上传时若通过网关代理，文件会经过多次网络传输，造成不必要的网络负担，在高并发时会导致网络拥堵，
     * 网关不可用，所以文件传输需绕过网关
     *   1,关闭文件上传网关路由，忽略文件上传服务
     *   2,通过微服务直接跳过网关进入微服务区(配置nginx.conf文件，拦截api/upload开头的请求转交到真实
     *     的服务地址)
     *   3,使用nginx的rewrite指令重写地址(去掉地址上多余的api)
     *
     */
    @Autowired
    private UploadService uploadService;
    @PostMapping("/image")
    public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file){
        //返回路径
        String result = uploadService.uploadImage(file);
        if (StringUtils.isBlank(result)){
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
        }
        return ResponseEntity.ok(result);
    }
}
